/**
 * @author Vitor Franco do Carmo (vitor.carmo@capgemini.com)
 * @since 29/03/2013
 *
 */
package br.com.vfcfw.commons.util;

import java.util.ResourceBundle;

import org.apache.log4j.Logger;

/**
 * Classe utilitária para obter o valor das propriedades no arquivo de configuração.
 * 
 * @author Vitor Franco do Carmo (vitor.carmo@capgemini.com)
 * @since 29/03/2013
 * 
 */
public class PropriedadeUtil {

    private static final Logger LOGGER = Logger.getLogger(PropriedadeUtil.class);

    /**
     * Retorna o valor da propriedade, no arquivo de configuração, correspondente a chave passada.
     * 
     * @param chave Chave da propriedade no arquivo de configuração.
     * @return Valor da propriedade.
     */
    public static String obterPropriedade(String chave) {

        return obterPropriedade("config", chave);
    }

    /**
     * Retorna o valor da propriedade, no arquivo de configuração, correspondente a chave passada.
     * 
     * @param resourceName Nome do arquivo de configuração.
     * @param chave Chave da propriedade no arquivo de configuração.
     * @return Valor da propriedade.
     */
    public static String obterPropriedade(String resourceName, String chave) {

        String propriedade = null;

        LogUtil.debug(LOGGER, String.format("Obtendo propriedade da chave: %s.", chave));

        try {

            propriedade = obterResourceBundle(resourceName).getString(chave);

        } catch (Exception e) {
            LogUtil.error(LOGGER, e, "Erro ao obter a propriedade da chave: %s.", chave);
        }
        return propriedade;
    }

    /**
     * Retorna o {@link ResourceBundle} (<tt>Arquivo de recurso</tt>).
     * 
     * @param resourceName Nome do arquivo de configuração.
     * @return {@link ResourceBundle}.
     */
    private static ResourceBundle obterResourceBundle(String resourceName) {

        ResourceBundle resourceBundle = null;

        LogUtil.debug(LOGGER, String.format("Obtendo o arquivo de propriedade com o nome: %s.", resourceName));

        try {

            resourceBundle = ResourceBundle.getBundle(resourceName);

        } catch (Exception e) {
            LogUtil.error(LOGGER, e, "Erro ao obter o arquivo de propriedades com o nome: %s.", resourceName);
        }
        return resourceBundle;
    }

}
